package com.star.controller.web;

import com.star.dto.ResponseData;
import com.star.dto.Result;
import com.star.util.JavaWebToken;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;

/**
 * @Classname indexController
 * @Author Star
 * @Date 2021/4/21 - 23:27
 * @Description 初始化页面
 */
@Controller
@RequestMapping("/index")
public class IndexController {
    /**
     * 跳转页面 主页面
     * @return
     */
    @RequestMapping("/home")
    private String myView(){
        return "public/index";
    }
    /**
     * 进行 拦截
     * @param request
     * @param response
     * @return 弃用 需要访问两遍 影响性能
     * @throws IOException
     */
    @RequestMapping("/inspection")
    private @ResponseBody
    ResponseData inspection(HttpServletRequest request, HttpServletResponse response) throws IOException {
        ResponseData responseData = null;
        // 获取请求头中的token验证字符串
        String headerToken = request.getHeader("token");
        // 检测当前页面，设置当前页不是登录页面时就对其进行拦截
        // 具体方法就是检测URL中有没有login字符串
        if (headerToken == null) {
            // 如果没有token，返回错误信息
            responseData = ResponseData.customerError();
        } else {
            try {
                // 对token更新与验证 用户是否一致
                headerToken = JavaWebToken.updateToken(headerToken);
            } catch (Exception e) {
                // 这里的ResponseData类自定义的返回信息类
                responseData = ResponseData.customerError();
            }
        }
        // 如果有错误信息
        if (responseData != null) {
            return ResponseData.customerError();
        } else {
            // 将token加入返回的header中
            response.setHeader("token", headerToken);
            return ResponseData.ok();
        }
    }

    /**
     * 设置
     * @return 跳转页面
     */
    @RequestMapping("/setting")
    private String settingView(){
        return "public/setting/setting";
    }
    /**.
     * 错误页面
     */
    @RequestMapping("/404")
    private String error404(){
        return "public/404";
    }
    @RequestMapping("/email")
    private String email(){
        return "public/templates/emailTimeplet";
    }
}
